package tests;

import metodosEcuacionesDiferenciales.Adams;
import funciones.FuncionXY;

public class AdamsBashforthMoultonTest {
public static void main(String[] args) {
	
	
	//defino la funcion
	FuncionXY f = new FuncionXY() {

		public double eval(double x, double y) {
			// cos(x) - sen(x) + x^2
			return Math.cos(x) - Math.sin(y) + Math.pow(x, 2);
		}	
	};
	//creo una instancia de adams, en este caso de orden 5
	Adams orden5 = Adams.createOrder5();
	
	/*
	 * devuelve resultado evaluado por Adams Bashforth. Le paso como parametros: la funcion,
	 * el x0 inicial, el y0 inicial, y xn que es el valor donde quiero encontrar y(xn)
	 */
	double resultado = orden5.adamsBashforth(f, -1, 3, -0.2);
	/*
	 * devuelve resultado evaluado por Adams Moulton. Le paso como parametros: la funcion,
	 * el x0 inicial, el y0 inicial. el xn  tubuscado, la cantidad de iteraciones, y el 
	 * margen de tolerancia hasta donde termina el metodo
	 */
	double resultadoCorregido = orden5.adamsMoulton(f, -1, 3, -0.2, 10, 0.000000001);
	
	
	System.out.println("El valor de la funcion en x=0.2 es: \n" +"Con el metodo predictor de Adams-Bashforth: "+ 
			resultado +"\n"+"Con el metodo predictor Bashforth y el corrector de Adams-Moulton: " +resultadoCorregido );
	
	}
}
